|









| |
J 程序应用
003 自动开始上次关机时关闭的应用 98-8-03
两点关键:
1 检测是 Windows 关闭引起的 QueryUnload 事件。
2 改写 Software\Microsoft\Windows\CurrentVersion\RunOnce
声明:
Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey"
(ByVal hKey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA"
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal
Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long '
Note that if you declare the lpData parameter as String, you must pass it By Value.
在主 Form 中增加:
Public Const REG_SZ = 1
Public Const HKEY_CURRENT_USER = &H80000001
Private Sub Form_QueryUnload (Cancel as Integer, UnloadMode as Integer)
Dim hKey As Long
Dim strRunCmd As String
If UnloadMode = vbAppWindows Then
strRunCmd = App.Path & "\" & App.EXEName & ".EXE"
Call RegCreateKey(HKEY_CURRENT_USER,
"Software\Microsoft\Windows\CurrentVersion\RunOnce", hKey)
Call RegSetValueEx(hKey, "MyApp", 0&, REG_SZ, ByVal strRunCmd,
Len(strRunCmd)+1)
Call RegCloseKey(hKey)
Endif
End Sub
002 安装向导生成程序组并建立多个程序项 98-7-28
1 在使用安装向导时,加入相应的文件:如Readme, 帮助文件等。
2 生成安装程序后,修改 Setup.lst 文件中的[Files], 例如要把 File1
放到程序组中, 修改 File1 的最后两项:
File1 = .... "","" 改为 ->
File1 = .... "程序项名称","应用全路径"
例如:
File1 = .... "工程说明","$(AppPath)\Readme.hlp"
3 [Setup] 中的 DefProgramGroup 为组名。
注意:如果只有一个 File 要求安装,不会建立程序组。
使用 App 对象的 PrevInstance
属性,可以阻止用户打开程序的多个实例。
If App.PrevInstance Then
MsgBox "该程序已经运行!"
Unload me
End If
用该种方法也可阻止多用户使用单用户的应用。
98-8-20: 以下代码可以直接打开已经存在的应用。(在最小化时好象有问题。)
If App.PrevInstance Then
sAppTitle = App.Title
App.Title = "DUMMY_"
AppActivate sAppTitle
SendKeys "%{ }{Enter}", True
End If
|